`:top
`!GObject`! ist eine unter der `F33f`_`[freien`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Freie_Software]`_`f Lizenz `F33f`_`[LGPL`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=GNU_Lesser_General_Public_License]`_`f veröffentlichte `F33f`_`[Programmbibliothek`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Programmbibliothek]`_`f und ein `F33f`_`[Framework`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Framework]`_`f, das `F33f`_`[objektorientiertes Programmieren`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Objektorientierte_Programmierung]`_`f in der `F33f`_`[Programmiersprache C`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=C_(Programmiersprache)]`_`f ermöglicht und auf vielen Plattformen einsetzbar ist.
>>Contents
• `F0af`_`[Beschreibung`#beschreibung]`_`f
• `F0af`_`[Geschichte`#geschichte]`_`f
• `F0af`_`[Einsatz`#einsatz]`_`f
• `F0af`_`[Literatur`#literatur]`_`f
• `F0af`_`[Weblinks`#weblinks]`_`f
• `F0af`_`[Einzelnachweise`#einzelnachweise]`_`f
-─
>>Beschreibung
Der Ansatz von GObject entspricht dem von `F33f`_`[Objective-C`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Objective-C]`_`f, das für Anwendungsentwicklung unter `F33f`_`[macOS`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=MacOS]`_`f `*(siehe `F33f`_`[Cocoa`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Cocoa_(API)]`_`f)`* verwendet wird. GObject ist das Fundament aller `F33f`_`[GTK+`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=GTK+]`_`f-/`F33f`_`[Gnome`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Gnome]`_`f-Anwendungen und die Basisklasse aller GTK-/Gnome-`F33f`_`[Klassen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Klasse_(Objektorientierung)]`_`f. GObject hängt lediglich von der `*libc`* `*(siehe `F33f`_`[Standard C Library`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Standard_C_Library]`_`f/`F33f`_`[glibc`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Glibc]`_`f)`* sowie der `F33f`_`[GLib`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=GLib]`_`f ab. GObject stellt weitere Funktionalitäten wie `F33f`_`[Events`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Ereignis_(Programmierung)]`_`f, `F33f`_`[Boxing von Datentypen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Autoboxing]`_`f, Fehlerbehandlung und das `F33f`_`[Referenzzählen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Referenzzählung]`_`f bereit. Objekttypen werden erst zur `F33f`_`[Laufzeit`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Laufzeit_(Informatik)]`_`f registriert. Damit wird eine gute `F33f`_`[Introspektion`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Reflexion_(Programmierung)]`_`f der Klassen ermöglicht, allerdings auf Kosten fehlender statischer `F33f`_`[Typsicherheit`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Typsicherheit]`_`f.
Die Objektorientierung bei GObject ermöglicht im Gegensatz zu `F33f`_`[C++`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=C++]`_`f keine `F33f`_`[Mehrfachvererbung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Mehrfachvererbung]`_`f. Stattdessen werden `F33f`_`[Interfaces`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Schnittstelle_(Objektorientierung)]`_`f wie bei `F33f`_`[Java`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Java_(Programmiersprache)]`_`f oder `F33f`_`[C#`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=C-Sharp]`_`f eingesetzt. Eine Klasse in GObject wird durch mindestens zwei `F33f`_`[C-Strukturen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Verbund_(Datentyp)]`_`f implementiert: Eine davon beinhaltet die Informationen der Klasse, zum Beispiel die `F33f`_`[Methoden`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Methode_(Programmierung)]`_`f/`F33f`_`[VTable`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=VTable]`_`f und statische `F33f`_`[Membervariablen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Membervariable]`_`f. Die zweite beinhaltet als Instanzinformationen zum Beispiel die Membervariablen. Es gibt keine `F33f`_`[Zugriffsmodifikatoren`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Zugriffsmodifikator]`_`f `*public, protected, private`* wie in den Programmiersprachen C++, Java oder C#; private Klassen-Member können aber durch zusätzliche verborgene C-Strukturen implementiert werden. Diese privaten Strukturen werden nicht in den öffentlichen `F33f`_`[Header-Dateien`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Header-Datei]`_`f der Klasse definiert. Bei der Erstellung einer GObject-Klasse müssen viele `F33f`_`[Makros`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Makro]`_`f und Initialisierungsfunktionen manuell geschrieben werden. Zur Erleichterung beim Schreiben von Klassen gibt es das Werkzeug GOB2 (GObject Builder), welches eine von Java entlehnte Syntax anbietet. GOB2 fungiert als `F33f`_`[Präprozessor`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Präprozessor]`_`f, welcher aus den Objektvorlagen Code für den C-Compiler generiert. Eine Alternative zu GOB2 stellt die Programmiersprache `F33f`_`[Vala`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Vala_(Programmiersprache)]`_`f/Genie dar, welches neben dem Codegerüst auch in der Lage ist, den gesamten Quelltext aus C#-ähnlicher Sprache zu übersetzen.
Wichtige Einschränkungen des GObjekt-Frameworks sind die fehlende Unterstützung von `F33f`_`[Namensräumen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Namensraum]`_`f, keine Möglichkeit zum `F33f`_`[Überladen`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Überladen]`_`f von Operatoren und Methoden sowie die rein „manuelle“ `F33f`_`[Ausnahmebehandlung`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Ausnahmebehandlung]`_`f.
>>Geschichte
Ursprünglich war das Objektsystem von GTK eng mit der Benutzerschnittstelle von GTK verwoben. Erst zur Version 2.0 von GTK/Gnome wurde es in ein eigenes Framework ausgelagert, damit dieses Objektsystem auch ohne Einbindung von GTK für beispielsweise reine `F33f`_`[kommandozeilengesteuerte`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Kommandozeile]`_`f Anwendungen und Serveranwendungen ohne `F33f`_`[grafische Benutzeroberfläche`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Grafische_Benutzeroberfläche]`_`f verwendet werden kann.
>>Einsatz
Die Kombination von C und GObject wird in vielen erfolgreichen `F33f`_`[Open-Source`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Open_Source]`_`f-Projekten eingesetzt, allen voran `F33f`_`[GTK+`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=GTK+]`_`f und damit schließlich dem kompletten `F33f`_`[Gnome`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Gnome]`_`f-Desktop sowie `F33f`_`[GIMP`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=GIMP]`_`f, `F33f`_`[Pango`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Pango]`_`f und vielen anderen.
>>Literatur
• `*Das GTK+/GNOME Entwickler Handbuch`*, `F33f`_`[Matthias Warkus`:/page/entry.mu`zim=wikipedia_de_all_nopic_2026-01.zim|entry_path=Matthias_Warkus]`_`f 2008, dpunkt verlag – Fundierte Einführung in GObject-Implementierung in Kapitel drei
>>Weblinks
• GObject API-Dokumentation (englisch)
• GOB2 – GObject Builder (englisch)
• Vala Project – GObject-Präprozessor und Programmiersprache (englisch)
>>Einzelnachweise
`:cite-note-43a17607bde70301-1`!1.`! 2.87.0 · GNOME / GLib · GitLab. (abgerufen am 25. November 2025).
`c`F0af`_`[↑ Back to top`#top]`_`f`a